import java.io.*;
import java.util.Scanner;
import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
import java.util.Stack;
import java.util.Set;
import java.util.HashSet;
import java.util.Queue;
import java.util.LinkedList;
import java.util.Deque;
import java.util.Map;
import java.util.HashMap;

public class Learn {
    public static void main(String[] args) {
        
        // 01-hello打印
        // printHello();

        // 02-数据类型
        // dataTypeLearn();

        // 03-控制结构
        // controlStructureLearn();

        // 04-数组练习
        // arrayLearn();

        // 05-文件操作
        // fileLearn();

        // 06-异常处理
        // exceptionLearn();

        // 07-集合框架
        arrayListLearn();
    }

    public static void printHello() {
        System.out.println("Hello World!");
    }

    public static void dataTypeLearn() {
        int num1 = 10;
        int num2 = 20;
        double num3 = 30.5; // double data type             
        System.out.println(num1 + num2 + num3);
    }

    public static void controlStructureLearn() {
        int num = 10;
        if (num > 5) {
            System.out.println("num is greater than 5");
        } else {
            System.out.println("num is less than 5");
        }
    }

    public static void loopStructureLearn() {
        
        for (int i = 0; i < 5; i++) {
            System.out.println("i = " + i);
        }
    }

    // 数组练习
    public static void arrayLearn() {
        // int[] numbers = {10, 20, 30, 40, 50};
        // numbers[4] = 80;

        // String[] names = {};
        // names[0] = "John01";
        // System.out.println(names[0]);

        // Integer[] numbers = {10, 20, 30, 40, 50};
        // System.out.println(numbers[0]);

        // 包装类数组
        // Integer[] integerArray = {10, 20, 30, 40, 50};
		
        // for (Integer num : integerArray) {
        //     System.out.println(num);
			
        //     // 可以调用Integer类的方法
        //     System.out.println("Is even: " + num.equals(20));
        // }

        // System.out.println("numbers[4] = " + numbers[4]);
        // System.out.println(numbers);

        // for (int i = 0; i < numbers.length; i++) {
        //     System.out.println("numbers[" + i + "] = " + numbers[i]);
        // }

        // int[] numbers = new int[5];
        // numbers[0] = 22;
        // numbers[1] = 9;

        // System.out.println(Arrays.toString(numbers));

        // double[] doubleArray = {1.1, 2.2, 3.3, 4.4, 5.5};
        // double[] doubleArray2 = new double[5];
        
        // float[] floatArray = {1.1f, 2.2f, 3.3f, 4.4f, 5.5f};
        // System.out.println(Arrays.toString(floatArray));
    }
    
    public static void fileLearn() 
    {
        String fileName = "test.txt";
        String content = "Hello World!";

        try {

            File file = new File(fileName);
            if (!file.exists()) {
                file.createNewFile();
            }

            FileWriter writer = new FileWriter(file);
            writer.write(content);
            writer.close();

            FileReader reader = new FileReader(file);
            char[] chars = new char[1024];
            int len = reader.read(chars);
            System.out.println(new String(chars, 0, len));
            reader.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void exceptionLearn() 
    {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter a number: ");
        
        try {
            int number = Integer.parseInt(scanner.nextLine());
            System.out.println("You entered: " + number);
        } catch (NumberFormatException e) {
            System.out.println("That's not a valid number.");
        } finally {
            scanner.close();
        }
    }

    // 集合框架练习 
    // List[ArrayList/Stack], 
    // Set[HashSet/TreeSet], 
    // Queue[LinkedList/priorityQueue], 
    // Deque[LinkedList/ArrayDeque], 
    // Map[HashMap/TreeMap/LinkedHashMap]
    public static void arrayListLearn() 
    {
        // List接口
        // List<String> arrayList = new ArrayList<>();
        // arrayList.add("apple");
        // arrayList.add("banana");
        // arrayList.add("orange");
        // arrayList.add("grape");        

        // // 遍历集合 
        // for (String fruit : arrayList) {
        //     System.out.println(fruit);
        // }
        // System.out.println("Size of list: " + arrayList.size());
        // // 集合是否为空     
        // System.out.println("Is list empty? " + arrayList.isEmpty());
        // // 集合是否包含某个元素     
        // System.out.println("Is list contains 'banana'? " + arrayList.contains("banana"));
        // // 集合元素位置     
        // System.out.println("Index of 'banana' in list: " + arrayList.indexOf("banana"));
        // // 集合元素替换     
        // arrayList.set(1, "peach");
        // System.out.println("Updated list: " + arrayList);

        // 列表 （Stack、ArrayList）
        // List<String> fruits = new Stack<>();
        // // List<String> fruits2 = new ArrayList<>();
        // fruits.add("apple");
        // fruits.add("banana");
        // fruits.add("orange");
        // fruits.remove("banana");        
        // System.out.println(fruits);

        // Set接口
        // Set<String> set = new HashSet<>();
        // set.add("apple");
        // set.add("banana");
        // set.add("orange");        
        // set.remove("banana");        
        // System.out.println(set);

        // Queue队列接口
        // Queue<String> queue = new LinkedList<>();
        // // queue.offer("apple");

        // queue.add("apple1");
        // queue.add("apple2");
        // queue.add("apple3");
        // // System.out.println(queue.poll());
        // System.out.println(queue.poll());

        // Deque双端队列接口
        // Deque<String> deque = new LinkedList<>();
        // deque.offerFirst("apple");
        // deque.offerLast("banana");
        // deque.add("orange");
        // System.out.println(deque);

        // Map接口
        Map<String, Integer> map = new HashMap<>();
        map.put("apple", 10);
        map.put("banana", 20);
        map.put("orange", 30);

        map.remove("banana");

        for (String key : map.keySet()) {
            System.out.println(key + " : " + map.get(key));
        }

        System.out.println(map);
    }

    // 数据库操作练习
    public static void dbLearn() 
    {

    }




    

}